home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / gawk / gawk213b.zoo / test / lisp / sets.w < prev    next >
Text File  |  1991-05-21  |  726b  |  31 lines

  1. ; set operations on lists
  2.  
  3. (set 'union
  4.     '(lambda (x y)
  5.     (cond ((null x) y)
  6.         ((member (car x) y) (union (cdr x) y))
  7.         (t (cons (car x) (union (cdr x) y))))))
  8.  
  9. (set 'intersection
  10.     '(lambda (x y)
  11.     (cond ((null x) nil)
  12.         ((member (car x) y)
  13.         (cons (car x) (intersection (cdr x) y)))
  14.         (t (intersection (cdr x) y)))))
  15.  
  16. (set 'ldifference
  17.     '(lambda (in out)
  18.     (cond ((null in) nil)
  19.         ((member (car in) out) (ldifference (cdr in) out))
  20.         (t (cons (car in) (ldifference (cdr in) out))))))
  21.  
  22. (set 'subsetp
  23.     '(lambda (a b)
  24.     (cond ((null a) t)
  25.         ((member (car a) b) (subsetp (cdr a) b))
  26.         (t nil))))
  27.  
  28. (set 'samesetp
  29.     '(lambda (a b)
  30.     (and (subsetp a b) (subsetp b a))))
  31.